package com.haidechizi.i18n.common.api;

import com.haidechizi.i18n.common.api.vo.BusinessLanguageVO;
import com.haidechizi.i18n.common.api.vo.MultiLanguage;
import com.haidechizi.i18n.common.api.vo.SingleLanguage;

import java.util.List;
import java.util.Map;

public interface I18nService {

    /**
     * 批量添加多语种数据
     */
    Boolean addBusinessLanguages(List<BusinessLanguageVO> businessLanguageVOs);

    /**
     * 查询单种语言
     *
     * @param systemCode   系统类型
     * @param businessCode 业务类型code
     * @param languageName 查询语种 必填 参考LanguageTypeEnum
     * @param businessKey  查询业务key 必填
     * @return
     */
    SingleLanguage querySingleLanguage(String systemCode, String businessCode, String languageName, String businessKey);

    /**
     * 查询单个业务数据的所有语言文案
     *
     * @param systemCode   系统类型
     * @param businessCode 业务类型code
     * @param businessKey  查询业务key 必填
     * @return
     */
    MultiLanguage queryMultiLanguage(String systemCode, String businessCode, String businessKey);

    /**
     * 批量查询多个业务的单种语言文案
     *
     * @param systemCode      系统类型
     * @param businessCode    业务类型code
     * @param languageName    查询语言 必填 参考LanguageTypeEnum
     * @param businessKeyList 查询业务key list 必填
     * @return 每种业务对应的多语言文案
     */
    List<SingleLanguage> batchQuerySingleLanguage(String systemCode, String businessCode, String languageName,
                                                  List<String> businessKeyList);

    /**
     * 批量查询多个业务的所有语言文案
     *
     * @param systemCode      系统类型
     * @param businessCode    业务类型code
     * @param businessKeyList 查询业务key list 必填
     * @return 每种业务对应的多语言文案
     */
    List<MultiLanguage> batchQueryMultiLanguage(String systemCode, String businessCode, List<String> businessKeyList);

    /**
     * 支持的国际化语言
     * key: 语言code
     * value: 语言名称
     */
    Map<String, String> supportLanguages(String systemCode, String businessCode);
}
